package cn.edu.tust.db;

import java.util.Properties;

import javax.sql.DataSource;

import org.apache.commons.dbcp2.BasicDataSourceFactory;

/**
 * @author Administrator 
 * 获取数据库连接操作：通过创建一个数据源对象进行数据库连接操作
 * 采用单例模式：创建一个数据源连接对象
 */
public class MyDataSource {
	// 创建一个静态的实例变量
	public static DataSource dataSource = null;

	// 私有构造方法：防止外部创建该实例对象
	private MyDataSource() {
		}

	/**
	 * 提供一个获取数据源的静态方法接口：获取dbcp数据源对象
	 * 
	 * @return 数据源对象
	 */
	public static DataSource getDataSource() {
		// 第一次初始化处理
		if (dataSource == null) {
			try {
				// 属性配置文件对象
				Properties prop = new Properties();
				// 将配置文件转换为输入流，并将输入流加载到Properties对象中
				prop.load(MyDataSource.class.getClassLoader().getResourceAsStream("db.properties"));
				// 获取数据源生成工厂类的静态方法获取数据源对象
				dataSource = BasicDataSourceFactory.createDataSource(prop);
			} catch (Exception e) {
				// 异常处理
				System.out.println("生成数据库连接池错误：" + e.getMessage());
			}
		}
		// 返回获取的数据源对象
		return dataSource;
	}
}
